using System.Text;

//
// * Copyright (c) 2002-2009 "Neo Technology,"
// *     Network Engine for Objects in Lund AB [http://neotechnology.com]
// *
// * This file is part of Neo4j.
// * 
// * Neo4j is free software: you can redistribute it and/or modify
// * it under the terms of the GNU Affero General Public License as
// * published by the Free Software Foundation, either version 3 of the
// * License, or (at your option) any later version.
// * 
// * This program is distributed in the hope that it will be useful,
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// * GNU Affero General Public License for more details.
// * 
// * You should have received a copy of the GNU Affero General Public License
// * along with this program. If not, see <http://www.gnu.org/licenses/>.
// 
namespace org.neo4j.kernel.impl.nioneo.store
{

	public class RelationshipRecord : AbstractRecord
	{
		private readonly int firstNode;
		private readonly int secondNode;
		private readonly int type;
		private int firstPrevRel = Record.NO_PREV_RELATIONSHIP.intValue();
		private int firstNextRel = Record.NO_NEXT_RELATIONSHIP.intValue();
		private int secondPrevRel = Record.NO_PREV_RELATIONSHIP.intValue();
		private int secondNextRel = Record.NO_NEXT_RELATIONSHIP.intValue();
		private int nextProp = Record.NO_NEXT_PROPERTY.intValue();

		public RelationshipRecord(int id, int firstNode, int secondNode, int type) : base(id)
		{
			this.firstNode = firstNode;
			this.secondNode = secondNode;
			this.type = type;
		}

		public virtual int getFirstNode()
		{
			return firstNode;
		}

		public virtual int getSecondNode()
		{
			return secondNode;
		}

		public virtual int getType()
		{
			return type;
		}

		public virtual int getFirstPrevRel()
		{
			return firstPrevRel;
		}

		public virtual void setFirstPrevRel(int firstPrevRel)
		{
			this.firstPrevRel = firstPrevRel;
		}

		public virtual int getFirstNextRel()
		{
			return firstNextRel;
		}

		public virtual void setFirstNextRel(int firstNextRel)
		{
			this.firstNextRel = firstNextRel;
		}

		public virtual int getSecondPrevRel()
		{
			return secondPrevRel;
		}

		public virtual void setSecondPrevRel(int secondPrevRel)
		{
			this.secondPrevRel = secondPrevRel;
		}

		public virtual int getSecondNextRel()
		{
			return secondNextRel;
		}

		public virtual void setSecondNextRel(int secondNextRel)
		{
			this.secondNextRel = secondNextRel;
		}

		public virtual int getNextProp()
		{
			return nextProp;
		}

		public virtual void setNextProp(int nextProp)
		{
			this.nextProp = nextProp;
		}

		public override string ToString()
		{
			StringBuilder buf = new StringBuilder();
			buf.Append("RelationshipRecord[").Append(getId()).Append(",").Append(inUse()).Append(",").Append(firstNode).Append(",").Append(secondNode).Append(",").Append(type).Append(",").Append(firstPrevRel).Append(",").Append(firstNextRel).Append(",").Append(secondPrevRel).Append(",").Append(secondNextRel).Append(",").Append(nextProp).Append("]");
			return buf.ToString();
		}
	}
}